package busquedas;

import java.util.List;

import model.Vuelo;

import org.hibernate.Criteria;

import daos.SessionManager;

public class CriterioDeBusqueda {

	private List<Filtro> filtros;
	private Long criterioID;
	/**
	 * Constructor
	 * @param Toma una lista de filtros para aplicar criterios
	 */
	public CriterioDeBusqueda(List<Filtro> filtros){
		this.filtros = filtros;
	}

	public CriterioDeBusqueda(){
		
	}

	@SuppressWarnings("unchecked")
	/**
	 * 	Realiza una busqueda aplicando todos los filtros que contiene.
	 * @return La lista de vuelos que satisfacen todos los filtros.
	 */
	public List<Vuelo> buscar(){
		Criteria criterio=SessionManager.getSession().createCriteria(Vuelo.class, "vuelo");
		
		for (Filtro aFiltro : filtros) {
			criterio = aFiltro.getRestriction(criterio);
		}
		return (List<Vuelo>) criterio.list();
	}

	public Long getCriterioID() {
		return criterioID;
	}

	public void setCriterioID(Long criterioID) {
		this.criterioID = criterioID;
	}
	
	public List<Filtro> getFiltros() {
		return filtros;
	}

	public void setFiltros(List<Filtro> filtros) {
		this.filtros = filtros;
	}
	
}
